#pragma once

class Property
{
private:
	double time = 0;
	double x, y;
	double curx, cury;
	int width, height;
	Image * image;

public:
	Property(const std::wstring & picname, int x, int y);
	virtual ~Property();

	void update(double dtime);
	void draw(Graphics * graphics);

	bool collide(Point pt);
	bool collide(Rect rc);
	virtual void dosomething() = 0;
};

class PropertyTimer :public Property
{
public:
	PropertyTimer(const std::wstring & picname, int x, int y);
	~PropertyTimer();

	void dosomething() override;
};

class PropertyStar :public Property
{
public:
	PropertyStar(const std::wstring & picname, int x, int y);
	~PropertyStar() = default;

	void dosomething() override;
};

class PropertyBomb :public Property
{
public:
	PropertyBomb(const std::wstring & picname, int x, int y);
	~PropertyBomb();

	void dosomething() override;
};